package com.fjec.info.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fjec.common.protocol.JsonResult;
import com.fjec.common.view.InfoRotationSummaryVO;
import com.fjec.common.view.InfoRotationVO;
import com.fjec.common.view.RpcReturnPage;
import com.fjec.info.entity.InfoRotation;
import com.baomidou.mybatisplus.extension.service.IService;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;


/**
 * <p>
 * 026.轮播图表 服务类
 * </p>
 *
 * @author admin
 * @since 2020-12-18
 */
public interface IInfoRotationService extends IService<InfoRotation> {

    /**
     * 根据市场编码获取轮播图 markCode=1则为首页轮播图
     *
     * @param markCode
     * @return
     */
    List<Map<String, Object>> getInfoRotationByMarkCode(Integer markCode);

    /**
     * 缓存根据市场编码获取轮播图 markCode=1则为首页轮播图
     *
     * @param markCode
     * @return
     */
//    List<Map<String, Object>> cacheInfoRotationByMarkCode(Integer markCode);

    /**
     * 后台查询轮播图列表
     *
     * @param page      分页条件
     * @param markCode  市场编码 市场编码=1则为首页轮播图
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     * @throws Exception
     */
    RpcReturnPage<InfoRotationVO> rpcGetInfoRotationPage(Page page, Integer markCode, String startTime, String endTime) throws Exception;

    /**
     * 后台保存或更新轮播图信息
     *
     * @param id       主键Id 为空则为更新
     * @param markCode 市场编码 首页为1
     * @param title    标题
     * @param picId    轮播图Id
     * @param picUrl   轮播图Url
     * @param linked   是否跳转
     * @param linkUrl  跳转Url
     * @param sort     排序
     * @param display  是否显示 0=不显示 1=显示
     * @return
     */
    boolean rpcSaveOrUpdateInfoRotation(Long id,
                                        Integer markCode,
                                        String title,
                                        Long picId,
                                        String picUrl,
                                        Integer linked,
                                        String linkUrl,
                                        Integer sort,
                                        Integer display);

    /**
     * 后台根据Id获取详细信息
     *
     * @param id
     * @return
     */
    InfoRotationVO rpcGetInfoRotationById(Long id) throws Exception;


    /**
     * 根据markCode查询并根据sort排序
     *
     * @param markCode
     * @return
     */
    List<Map<String, Object>> getInfoRotationByMarkCodeAndSort(Integer markCode);

    /**
     * 后台根据Id获取详细信息
     *
     * @param id
     * @return
     */
    boolean rpcDelInfoRotation(Long id);

    /**
     * 获取首页轮播图
     *
     * @return
     */
    List<Map<String, Object>> getMainPageRotation();

    /**
     * 缓存首页轮播图
     *
     * @return
     */
    List<Map<String, Object>> cacheMainPageRotation();
}
